import { defineStore } from 'pinia';
import { ref } from 'vue';

export const useBodyStatsStore = defineStore('bodyStats', () => {
  // 状态
  const stats = ref([]);

  // 从本地存储加载数据
  const loadStats = () => {
    try {
      const savedStats = localStorage.getItem('bodyStats');
      if (savedStats) {
        stats.value = JSON.parse(savedStats);
        // 按日期排序
        stats.value.sort((a, b) => new Date(a.date) - new Date(b.date));
      }
    } catch (error) {
      console.error('Failed to load body stats:', error);
      stats.value = [];
    }
  };

  // 保存数据到本地存储
  const saveStats = () => {
    try {
      localStorage.setItem('bodyStats', JSON.stringify(stats.value));
    } catch (error) {
      console.error('Failed to save body stats:', error);
    }
  };

  // 初始化
  loadStats();

  // 动作
  const addStats = (newStats) => {
    // 检查是否已有当天数据
    const dateStr = newStats.date;
    const existingIndex = stats.value.findIndex(s => s.date === dateStr);

    if (existingIndex !== -1) {
      // 更新现有数据
      stats.value[existingIndex] = {
        ...stats.value[existingIndex],
        ...newStats,
        id: stats.value[existingIndex].id
      };
    } else {
      // 添加新数据
      stats.value.push({
        id: Date.now(),
        ...newStats
      });
      // 保持排序
      stats.value.sort((a, b) => new Date(a.date) - new Date(b.date));
    }

    saveStats();
  };

  const deleteStats = (index) => {
    stats.value.splice(index, 1);
    saveStats();
  };

  const getStatsByDateRange = (startDate, endDate) => {
    return stats.value.filter(s => {
      const date = new Date(s.date);
      return date >= startDate && date <= endDate;
    });
  };

  const getLatestStats = () => {
    if (stats.value.length === 0) return null;
    return stats.value[stats.value.length - 1];
  };

  const clearAllStats = () => {
    stats.value = [];
    localStorage.removeItem('bodyStats');
  };

  return {
    stats,
    loadStats,
    addStats,
    deleteStats,
    getStatsByDateRange,
    getLatestStats,
    clearAllStats
  };
});